#!/bin/bash

pkgBuildDir="${1}"
outDir="$(pwd)/out"
reportFile="${outDir}/dep_status"

mkdir -p "${outDir}"
cd "${pkgBuildDir}"

dep status -v -old -json > "${reportFile}"

if [ "$(cat "${reportFile}")" == "[]" ] ; then
    exit 0
fi

jq -C . "${reportFile}"

#
# Borrowed from https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/support/notify_slack.sh
# and adjusted for our needs:)
#
if [[ -z "${CI_DEP_STATUS_NOTIFY_CHANNEL}" ]] || [[ -z "${CI_DEP_STATUS_NOTIFY_SLACK_WEBHOOK}" ]]; then
    echo "Variables CI_DEP_STATUS_NOTIFY_CHANNEL and CI_DEP_STATUS_NOTIFY_SLACK_WEBHOOK are not defined"
    echo "Will not send slack notification"
else
    messageTmpFile="$(mktemp)"

    cat > "${messageTmpFile}" << EOS
\`dep status\` check for <${CI_PROJECT_URL}> failed. Some dependencies should be updated:
\`\`\`
$(jq -M . "${reportFile}")
\`\`\`
See <${CI_JOB_URL}>
EOS

    message=$(sed -e ':a' -e 'N' -e '$!ba' -e "s/\n/\\\n/g" "${messageTmpFile}")
    payload='payload={"channel": "'"${CI_DEP_STATUS_NOTIFY_CHANNEL}"'", "username": "GitLab Runner Dep Status Check", "text": "'"${message//\"/\\\"}"'", "icon_emoji": ":mantelpiece_clock:"}'
    curl -X POST -s -L --data-urlencode "${payload}" "${CI_DEP_STATUS_NOTIFY_SLACK_WEBHOOK}"
fi

exit 1
